package org.pms.core.dao;

import java.util.List;

import org.pms.core.entity.Person;
import org.pms.core.exception.DataAccessException;

/**
 * Interface de persistência da entidade Pessoa
 * 
 * @author Paulo
 *
 */
public interface PersonDao {

	/**
	 * Obtem todas as pessoas
	 * @return
	 */
	List<Person> findAll()  throws DataAccessException;

	/**
	 * Obtem pessoa pelo seu identificador
	 * @param id identificador banco de dados
	 * @return Person - pessoa
	 */
	Person findById(Integer id) throws DataAccessException;

	/**
	 * Salva ou atualiza os dados da pessoa
	 * @param person dados da pessoa a serem salvos
	 * @return Person pessoa com dados atualizados
	 */
	Person saveOrUpdate(Person person) throws DataAccessException;

	/**
	 * Salva os dados da pessoa
	 * @param person dados da pessoa a serem salvos
	 * @return Person pessoa com os dados salvos
	 */
	Person save(Person person) throws DataAccessException;

	/**
	 * Remove uma pessoa do banco de dados
	 * 
	 * @param person pessoa a ser removida do banco
	 */
	void delete(Person person) throws DataAccessException;

}